/* ****************************************************************************
 *
 * Copyright (c) Microsoft Corporation. 
 *
 * This source code is subject to terms and conditions of the Microsoft Public License. A 
 * copy of the license can be found in the License.html file at the root of this distribution. If 
 * you cannot locate the  Microsoft Public License, please send an email to 
 * dlr@microsoft.com. By using this source code in any fashion, you are agreeing to be bound 
 * by the terms of the Microsoft Public License.
 *
 * You must not remove this notice, or any other, from this software.
 *
 *
 * ***************************************************************************/

using Microsoft.Scripting.Ast;

namespace Microsoft.Scripting.Actions {
    internal partial class Stitcher {
        private delegate Expression StitchDelegate(Stitcher s, Expression expr);

        private static readonly StitchDelegate[] _Stitchers =
        {
            #region Generated Rule Stitcher

            // *** BEGIN GENERATED CODE ***
            // generated by function: gen_rule_stitcher from: generate_tree.py

            StitchBinaryExpression,                 //    Add
            StitchBinaryExpression,                 //    AddChecked
            StitchBinaryExpression,                 //    And
            StitchBinaryExpression,                 //    AndAlso
            StitchUnaryExpression,                  //    ArrayLength
            StitchBinaryExpression,                 //    ArrayIndex
            StitchMethodCallExpression,             //    Call
            StitchBinaryExpression,                 //    Coalesce
            StitchConditionalExpression,            //    Conditional
            StitchConstantExpression,               //    Constant
            StitchUnaryExpression,                  //    Convert
            StitchUnaryExpression,                  //    ConvertChecked
            StitchBinaryExpression,                 //    Divide
            StitchBinaryExpression,                 //    Equal
            StitchBinaryExpression,                 //    ExclusiveOr
            StitchBinaryExpression,                 //    GreaterThan
            StitchBinaryExpression,                 //    GreaterThanOrEqual
            StitchInvocationExpression,             //    Invoke
            StitchLambdaExpression,                 //    Lambda
            StitchBinaryExpression,                 //    LeftShift
            StitchBinaryExpression,                 //    LessThan
            StitchBinaryExpression,                 //    LessThanOrEqual
                                                    // ** ListInit
            StitchMemberExpression,                 //    MemberAccess
                                                    // ** MemberInit
            StitchBinaryExpression,                 //    Modulo
            StitchBinaryExpression,                 //    Multiply
            StitchBinaryExpression,                 //    MultiplyChecked
            StitchUnaryExpression,                  //    Negate
            StitchUnaryExpression,                  //    UnaryPlus
            StitchUnaryExpression,                  //    NegateChecked
            StitchNewExpression,                    //    New
            StitchNewArrayExpression,               //    NewArrayInit
            StitchNewArrayExpression,               //    NewArrayBounds
            StitchUnaryExpression,                  //    Not
            StitchBinaryExpression,                 //    NotEqual
            StitchBinaryExpression,                 //    Or
            StitchBinaryExpression,                 //    OrElse
            StitchParameterExpression,              //    Parameter
            StitchBinaryExpression,                 //    Power
            StitchUnaryExpression,                  //    Quote
            StitchBinaryExpression,                 //    RightShift
            StitchBinaryExpression,                 //    Subtract
            StitchBinaryExpression,                 //    SubtractChecked
            StitchUnaryExpression,                  //    TypeAs
            StitchTypeBinaryExpression,             //    TypeIs
            StitchActionExpression,                 //    ActionExpression
            StitchAssignmentExpression,             //    Assign
            StitchBlock,                            //    Block
            StitchBreakStatement,                   //    BreakStatement
            StitchLambdaExpression,                 //    Generator
            StitchContinueStatement,                //    ContinueStatement
            StitchDeleteExpression,                 //    Delete
            StitchDoStatement,                      //    DoStatement
            StitchEmptyStatement,                   //    EmptyStatement
            StitchLabeledStatement,                 //    LabeledStatement
            StitchLocalScopeExpression,             //    LocalScope
            StitchLoopStatement,                    //    LoopStatement
            StitchUnaryExpression,                  //    OnesComplement
            StitchReturnStatement,                  //    ReturnStatement
            StitchScopeExpression,                  //    Scope
            StitchSwitchStatement,                  //    SwitchStatement
            StitchThrowStatement,                   //    ThrowStatement
            StitchTryStatement,                     //    TryStatement
            StitchVariableExpression,               //    Variable
            StitchYieldStatement,                   //    YieldStatement
            StitchExtensionExpression,              //    Extension

            // *** END GENERATED CODE ***

            #endregion
        };
    }
}
